home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / setvmode / src / setvmode.c
C/C++ Source or Header  |  1993-07-08  |  2KB  |  109 lines

  1. /***********
  2. *
  3. *   setvmode.c
  4. */
  5.  
  6. #include <egb.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9.  
  10. char work[1536];
  11. unsigned char para[512] = {
  12.     15,0,0,0,
  13.      1,0,0,0, 255,   0,   0, 0,
  14.      2,0,0,0,   0, 255,   0, 0,
  15.      3,0,0,0, 255, 255,   0, 0,
  16.      4,0,0,0,   0,   0, 255, 0,
  17.      5,0,0,0, 255,   0, 255, 0,
  18.      6,0,0,0,   0, 255, 255, 0,
  19.      7,0,0,0, 255, 255, 255, 0,
  20.      8,0,0,0, 255, 255, 255, 0,
  21.      9,0,0,0, 255,   0,   0, 0,
  22.     10,0,0,0,   0, 255,   0, 0,
  23.     11,0,0,0, 255, 255,   0, 0,
  24.     12,0,0,0,   0,   0, 255, 0,
  25.     13,0,0,0, 255,   0, 255, 0,
  26.     14,0,0,0,   0, 255, 255, 0,
  27.     15,0,0,0, 255, 255, 255, 0
  28.     };
  29.  
  30. void main(int argc, char **argv)
  31. {
  32.     int mode = 3, mode2 = 3, err = 0;
  33.  
  34.     EGB_init(work,1536);
  35.     if (argc > 1) {
  36.         mode = atoi(argv[1]);
  37.         if (mode < 1) {
  38.             mode = 3;
  39.         }
  40.         EGB_resolution(work, 0, mode);
  41.         if (mode <12) {
  42.             if (argc > 2) {
  43.                 mode2 = atoi(argv[2]);
  44.                 if (mode2 < 1) {
  45.                     mode2 = 3;
  46.                 }
  47.             }
  48.             else {
  49.                 mode2 = mode;
  50.             }
  51.             switch (mode) {
  52.  
  53.             case 1:
  54.                 if (mode2 != 1) {
  55.                     err = 1;
  56.                 }
  57.                 break;
  58.             case 2:
  59.                 if (mode2 != 2) {
  60.                     err = 1;
  61.                 }
  62.                 break;
  63.             case 3:
  64.             case 5:
  65.             case 10:
  66.                 if ((mode2 != 3) && (mode2 != 5) && (mode2 != 10)) {
  67.                     err = 1;
  68.                 }
  69.                 break;
  70.             case 4:
  71.             case 6:
  72.                 if ((mode2 != 4) && (mode2 != 6)) {
  73.                     err = 1;
  74.                 }
  75.                 break;
  76.             case 7:
  77.             case 9:
  78.                 if ((mode2 != 7) && (mode2 != 9)) {
  79.                     err = 1;
  80.                 }
  81.                 break;
  82.             case 8:
  83.             case 11:
  84.                 if ((mode2 != 8) && (mode2 != 11)) {
  85.                     err = 1;
  86.                 }
  87.                 break;
  88.             }
  89.  
  90.             if (err > 0) {
  91.                 puts("画面設定に誤りがあります。 両画面同じモードに設定します。");
  92.                 mode2 = mode;
  93.             }
  94.             EGB_resolution(work, 1, mode2);
  95.         }
  96.     }
  97.     if (mode <= 4) {
  98.         EGB_writePage(work, 0);
  99.         EGB_palette(work, 1, (char *)para);
  100.     }
  101.     if (mode2 <= 4) {
  102.         EGB_writePage(work, 1);
  103.         EGB_palette(work, 1, (char *)para);
  104.         EGB_writePage(work, 0);
  105.     }
  106.     puts("\x1b*");
  107.  
  108. }
  109.